Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

182
Views
¿Cómo obtener el estado "tiene sincronización con la nube" de Firestore para una colección específica?

Estoy tratando de obtener el estado de sincronización de un documento con varias colecciones secundarias en Firestore.

La aplicación es compatible tanto en línea como fuera de línea. Antes de que el usuario cierre una pantalla, quiero comprobar si todos los datos del documento se han sincronizado con la nube .

Lo que he intentado actualmente es el atributo hasPendingWrites . Pero siempre me sale false .

 db.collection("cities").doc(city.id).onSnapshot((querySnapshot)=> { console.log(querySnapshot.metadata.hasPendingWrites); });

Editar: estoy actualizando documentos en colecciones anidadas de la ciudad. ¿Puede ser el problema?

La estructura de mi colección

 cities document (which I'm listening to the sync status) ├─── leaders collection (which I'm updating) ├─── fleet collection (which I'm updating) ├─── roads collection (which I'm updating) ├─── maps collection (which I'm updating)
about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Solución 1: Usar collectionGroup

collectionGroup es una función especial que le permite acceder a las colecciones desde sus nombres, independientemente de dónde se encuentren.

La ventaja es que le permite acceder a subcolecciones en varios documentos. Por lo tanto, puede tener collectionGroup('leaders') en lugar de colección ('líderes') y es a él que adjuntará el oyente de instantáneas de hasPendingWrites. Y tendría que hacer lo mismo para las otras subcolecciones como 'flota', 'carreteras' y 'mapas'.

Tenga en cuenta que esto podría aumentar innecesariamente los costos de lectura/escritura de los documentos en Firebase cuando su producción escala.

Solución 2: la interfaz de usuario (recomendada)

Tenga partes de la interfaz de usuario que permitan al usuario conocer la importancia de su conexión a Internet. Tal vez impidiendo el acceso por completo, mostrando algún vector o banner si el usuario no tiene buena conexión a Internet.

Esta solución es mejor porque detectar el estado de sincronización por su cuenta sería una exageración. No es solo una cosa de Firebase. Incluso si estuviera implementando WebSockets personalizados por su cuenta. Además, Firebase ya tiene propiedades de sincronización automática, que es el método .onSnapshot() en sí.

Además, ¿no puede saber si el usuario está intentando desinstalar una aplicación móvil cuando no está conectado a Internet? No se puede sincronizar y se perderán los datos. Por lo tanto, es mejor hacerles sentir que el producto es más un producto en línea. Además, casi todo está en línea hoy.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!